1. Field of the Invention
This invention relates to output drivers, and more specifically to programming an output driver to have a tri-state output or an open collector output.
2. Background Information
In electronic systems and subsystems, there may be many devices and components that need to communicate with each other. Bus structures in these systems and subsystems allow communication between the various devices and components as well as with the outside world. The concept of a bus structure is to have a single set of lines, one for each bit, which runs to each subsystem and/or component, much like a party line employed by the telephone company. Control lines then select which component will be the transmitter of information and which will be the receiver. Most subsystems and components both transmit and receive information, but some only handle data in one direction. When subsystems and components are interconnected that transmit and receive information, one way to implement the communication path is to have a single signal line for transmitting information and another for receiving information. However, a single bus is capable of providing only one path, therefore, reducing signal lines and possibly overall space taken up by the system or subsystem.
To have a successful bus structure, there must be a convenient method for coupling sources to the bus. There must also be a good way to ensure that no more than one source tries to communicate on the bus at any one time. Two current ways of satisfying these conditions are the use of open collector logic (or open drain logic for Metal Oxide Semiconductor (MOS) technology), and tri-state logic.
FIGS. 1A and 1B show example open collector circuit configurations. In open collector gates, each gate is constructed with the collector of its final transistor, forming a direct output as shown in FIG. 1A. Several gates may then be arranged to form the common (wired logic) output as shown in FIG. 1B by connecting their collectors to a single external resistor-power supply combination. The operation of the composite logic circuit is that if all gates supply no more than 0 volts to each transistor""s input resistor, each transistor will be off, resulting in the common output being xe2x80x9cpulled-upxe2x80x9d to the power supply voltage (e.g., +5 volts).
On the other hand, any input transistor receiving a voltage somewhat above zero volts (e.g., plus 5 v) will be turned on, causing it to act like a closed switch between the collector and emitter. Thus, one or more on transistors forces the common output to be effectively grounded. Open collector logic allows each source to be placed on the bus at any convenient location rather than at a central point. Moreover, more sources can be easily added without having to exchange the original xe2x80x9cORxe2x80x9d gate for one permitting more inputs.
FIG. 2 shows a typical tri-state gate. As the name implies, tri-state gates have three possible outputs: logical xe2x80x981xe2x80x99, logical xe2x80x980xe2x80x99, and an open circuit condition. Note that when the control is in the logical xe2x80x980xe2x80x99 state, the output is effectively disconnected from the bus so that the input has no effect on the bus. When the control is in the xe2x80x981xe2x80x99 state, however, the output, and hence the bus, follow the gate input. With tri-state logic, a large number of sources may be properly connected to the bus.
In designing an electronic circuit or subsystem, many times it is known what type of interface the subsystem or component will be connected to, i.e., open collector or tri-state. However, in some cases, especially in cases where generic xe2x80x9coff the shelfxe2x80x9d components or subsystems are being designed, it is not known what type of bus structure or external connection the subsystem or circuit will be used in and/or connected to. In these cases, a designer may have to design two versions of a subsystem or component, one with a tri-state output and the other with an open collector output. This problem is more evident in the design of microcircuits or chips. In designing these devices, once the device is manufactured, no modifications or changes are possible. Therefore, to make the microcircuit usable to every application, two versions of the microcircuit may need to be designed. This is both time consuming and expensive.
Therefore, a need exists for method and apparatus for a programmable output interface that allows adaptation of a single subsystem or component device to be designed into several product offerings with only simple programming differences.